<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        this： 解析器在调用函数每次都会向函数内部传递进一个隐含的参数，这个参数就是this 
        this指向的是一个对象，函数执行的上下文对象。根据函数的调用方式不同，this会指向不同的对象
    -->
    <script>
        function sum(a, b) {
            console.log(this);
            return a + b
        }

        var obj = {
            name: "jack",
            sum: sum
        }

        sum(2, 3); // 以函数形式调用，this指向的是window对象
        obj.sum(2, 3); // 以方法形式调用，this指向的是调用它的obj对象


        var name = "全局"

        function open() {
            console.log(this.name); // this可以根据调用的方式不同，指向不同对象
        }

        var obj1 = {
            name: "马云",
            open: open
        }

        var obj2 = {
            name: "李嘉诚",
            open: open
        }

        open();
        obj1.open();
        obj2.open();
    </script>
</body>

</html>